Amazon S3 Tables のポリシー管理コマンドの解説 #AWSreInvent

Amazon S3 Tables のポリシー管理コマンドの解説 #AWSreInvent

Clock Icon2024.12.29

AWS事業本部コンサルティング部の石川です。Amazon S3 TablesのTable Bucket Policyは、S3 Tablesのリソースに対するアクセス制御を管理するためのポリシーです。このポリシーを使用することで、テーブルバケットやテーブルレベルでAPIアクセス権限を付与することができます。

aws s3tables コマンドを使用して、Amazon S3 Tables のTable BucketやTableの管理コマンドの解説します。

S3 Tables のポリシー管理とは

Amazon S3 Tablesのポリシー管理は、S3 Tablesのリソースに対するアクセス制御を管理するためのポリシーです。このポリシーを使用することで、テーブルバケットやテーブルレベルでAPIアクセス権限を付与することができます。

Table Bucket Policyの主な特徴

アクセス制御の柔軟性
Table Bucket Policyを使用すると、以下のようなきめ細かいアクセス制御が可能になります。

  • 個々のテーブルへのアクセス
  • テーブルバケット全体へのアクセス

セキュリティの強化
S3 Tablesは、Amazon S3とは異なるs3tablesという独自のサービス名前空間を使用します。これにより、S3 Tablesサービスとそのリソースに特化したポリシーを設計できます。

Table Bucket Policyのメリット

ポリシー管理を使用することで、S3 Tablesのリソースに対するアクセス制御を効果的に管理し、セキュリティを強化しつつ、必要な操作を柔軟に許可することができます。これにより、データレイクの管理が容易になり、コンプライアンス要件にも対応しやすくなります。

細かいアクセス制御

テーブルバケットやテーブルレベルで権限を設定できるため、データへのアクセスを詳細に制御できます。

セキュリティの向上

必要最小限の権限を付与することで、データのセキュリティを強化できます。

管理の簡素化

複数のテーブルに対して同じ権限セットを定義する場合、テーブルバケットポリシーを使用することで管理が容易になります。

コンプライアンスの遵守

規制産業における多テナント環境やデータ分離要件に対応できます。

ポリシー管理コマンド

Amazon S3 Tables のポリシー管理するための様々な操作が可能です。主な操作には以下のようなものがあります。

カテゴリ コマンド 機能概要
Table Bucket Policy get-table-bucket-policy テーブルバケットポリシーの取得
put-table-bucket-policy テーブルバケットポリシーの設定
delete-table-bucket-policy テーブルバケットポリシーの削除
Table Policy get-table-policy テーブルポリシーの取得
put-table-policy テーブルポリシーの設定
delete-table-policy テーブルポリシーの削除

Table Bucket の管理コマンド

Table Bucket Policy の表示

コマンド

aws s3tables get-table-bucket-policy \
  --table-bucket-arn <table-bucket-arn>
  • --table-bucket-arn: ポリシーを表示するTable BucketのAmazon Resource Name (ARN)を指定します。

コマンドが成功すると、ポリシーのJSONテキストが返されます。

実行例

$ aws s3tables get-table-bucket-policy \
>   --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221
{
    "resourcePolicy": "{\"Version\":\"2012-10-17\",\"Id\":\"VPCEAccessPolicy\",\"Statement\":[{\"Sid\":\"AccessFromSpecificVPCEOnly\",\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"s3tables:*\",\"Resource\":\"*\",\"Condition\":{\"StringEquals\":{\"aws:SourceVpce\":\"vpce-03267f6d1d9cffaad\"}}}]}"
}

なお、作成した直後の Table Bucket は、Table Bucket Policy がないのでエラーになります。

$ aws s3tables get-table-bucket-policy \
>   --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221

An error occurred (NotFoundException) when calling the GetTableBucketPolicy operation: The specified bucket policy does not exist.

Table Bucket Policy の作成

コマンド

aws s3tables put-table-bucket-policy \
  --table-bucket-arn <table-bucket-arn> \
  --resource-policy <policy_json_string>
  • --table-bucket-arn: ポリシーを表示するTable BucketのAmazon Resource Name (ARN)を指定します。
  • --resource-policy: 作成したいTableのポリシードキュメントをJSONで指定します。

実行例

$ aws s3tables put-table-bucket-policy \
>   --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221 \
>   --resource-policy '{
>   "Version": "2012-10-17",
>   "Id": "VPCEAccessPolicy",
>   "Statement": [
>     {
>       "Sid": "AccessFromSpecificVPCEOnly",
>       "Effect": "Deny",
>       "Principal": "*",
>       "Action": "s3tables:*",
>       "Resource": [
>         "*"
>       ],
>       "Condition": {
>         "StringNotEquals": {
>           "aws:SourceVpce": "vpce-03267f6d1d9cffaad"
>         }
>       }
>     }
>   ]
> }'

Table Bucket Policy の削除

コマンド

aws s3tables delete-table-bucket-policy \
  --table-bucket-arn <table-bucket-arn>
  • --table-bucket-arn: ポリシーを削除するTable BucketのAmazon Resource Name (ARN)を指定します。

実行例

$ aws s3tables delete-table-bucket-policy \
> --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221

Table の管理コマンド

Table Policy の表示

コマンド

aws s3tables get-table-policy \
  --table-bucket-arn <table-bucket-arn> \
  --namespace <namespace-name> \
  --name <table-name>
  • --table-bucket-arn: ポリシーを表示するTable BucketのAmazon Resource Name (ARN)を指定します。

  • --namespace: ポリシーを表示するNamespace名を指定します。

  • --name: ポリシーを表示するTable名を指定します。

コマンドが成功すると、ポリシーのJSONテキストが返されます。

実行例

$ aws s3tables get-table-policy \
>   --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221 \
>   --namespace cm_namespace \
>   --name lineorder
{
    "resourcePolicy": "{\"Version\":\"2012-10-17\",\"Id\":\"VPCEAccessPolicy\",\"Statement\":[{\"Sid\":\"AccessFromSpecificVPCEOnly\",\"Effect\":\"Deny\",\"Principal\":\"*\",\"Action\":\"s3tables:*\",\"Resource\":\"arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221/table/b2b01673-86df-498f-9290-e1c2cdcd31fc\",\"Condition\":{\"StringNotEquals\":{\"aws:SourceVpce\":\"vpce-03267f6d1d9cffaad\"}}}]}"
}

なお、作成した直後の Table Bucket は、Table Bucket Policy がないのでエラーになります。

$ aws s3tables get-table-policy \
>   --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221 \
>   --namespace cm_namespace \
>   --name lineorder

An error occurred (NotFoundException) when calling the GetTablePolicy operation: The specified table policy does not exist.

Table Policy の作成

コマンド

aws s3tables put-table-policy \
  --table-bucket-arn <table-bucket-arn> \
  --namespace <namespace-name> \
  --name <table-name> \
  --resource-policy <policy_json_string>
  • --table-bucket-arn: ポリシーを作成するTable BucketのAmazon Resource Name (ARN)を指定します。
  • --namespace: ポリシーを作成するNamespace名を指定します。
  • --name: ポリシーを作成するTable名を指定します。
  • --resource-policy: 作成したいTableのポリシードキュメントをJSONで指定します。

実行例

$ aws s3tables put-table-policy \
>   --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221 \
>   --namespace cm_namespace \
>   --name lineorder \
>   --resource-policy '{
>   "Version": "2012-10-17",
>   "Id": "VPCEAccessPolicy",
>   "Statement": [
>     {
>       "Sid": "AccessFromSpecificVPCEOnly",
>       "Effect": "Deny",
>       "Principal": "*",
>       "Action": "s3tables:*",
>       "Resource": [
>         "arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221/table/b2b01673-86df-498f-9290-e1c2cdcd31fc"
>       ],
>       "Condition": {
>         "StringNotEquals": {
>           "aws:SourceVpce": "vpce-03267f6d1d9cffaad"
>         }
>       }
>     }
>   ]
> }'

Table Bucket Policy の削除

コマンド

aws s3tables delete-table-policy \
  --table-bucket-arn <table-bucket-arn> \
  --namespace <namespace-name> \
  --name <table-name> 
  • --table-bucket-arn: ポリシーを削除するTable BucketのAmazon Resource Name (ARN)を指定します。
  • --namespace: ポリシーを削除するNamespace名を指定します。
  • --name: ポリシーを削除するTable名を指定します。

実行例

$ aws s3tables delete-table-policy \
>   --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221 \
>   --namespace cm_namespace \
>   --name lineorder

最後に

Amazon S3 Tablesのポリシー管理は、データアクセスの制御と安全性の確保において重要な役割を果たしています。Table Bucket PolicyとTable Policyを適切に設定することで、テーブルバケット、テーブルレベルでのきめ細かいアクセス制御が可能となり、セキュリティの強化とコンプライアンス要件への対応が容易になります。

AWS CLIを使用したポリシーの管理コマンドにより、ポリシーの表示、作成、削除が効率的に行えるため、管理者はデータレイクのセキュリティを迅速かつ効果的に維持することができます。この機能を活用することで、組織はデータの保護と適切なアクセス管理を両立させ、安全かつ柔軟なデータ活用環境を構築することが可能となります。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.